﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using System.IO;
using prDe_Tai.trunggian;
namespace prDe_Tai

{
    public partial class frmMainForm : Form
    {
        public frmMainForm()
        {
            InitializeComponent();
        }
        trunggian_danhsachbosuutap obj_danhsachbosuutap = new trunggian_danhsachbosuutap();
        string trangthailblloai = "";
        string g_tenphanmem, g_chude, g_chucnang, g_loaiphanmem, g_diachidownload;        
        void hienthidautien()
        {
            flowLayoutPanel_FreeWare.Visible = false;
            flowLayoutPanel_ShareWare.Visible = false;
            flowLayoutPanel_Favourite.Visible = false;
            picFreeWare.BackgroundImage = picXuongSang.BackgroundImage;
            picShareWare.BackgroundImage = picXuongSang.BackgroundImage;
            picFavourite.BackgroundImage = picXuongSang.BackgroundImage;
            grbShareWare.Location = new Point(grbFreeWare.Location.X, grbFreeWare.Location.Y + grbFreeWare.Height);
            grbFavourite.Location = new Point(grbFavourite.Location.X, grbFreeWare.Location.Y + grbFreeWare.Height + grbShareWare.Height);
        }        
        void hieuchinhlabel_an_hien(bool bien)
        {
            lblTenPhanMem.Visible = bien;
            lblChucNangPhanMem.Visible = bien;
            lblLoaiPhanMem.Visible = bien;
            lblChuDe.Visible = bien;
        }
        private void frmMainForm_Load(object sender, EventArgs e)
        {           
            hienthidautien();
            flowLayoutPanel_FreeWare.Size = new Size(159, 150);
            flowLayoutPanel_ShareWare.Size = new Size(159, 150);
            flowLayoutPanel_Favourite.Size = new Size(159, 150);
            loaddulieuvao_FlowlayoutpanelFavourit();         
        }
        //Hiệu chỉnh vị trí của listmenu       
        void vitrisharewaremo()
        {
            vitrifreewaredong();
            vitrifavouritedong();
            picShareWare.BackgroundImage = picXuongToi.BackgroundImage;
            grbShareWare.Location = new Point(grbShareWare.Location.X, grbFreeWare.Location.Y + grbFreeWare.Height);
            flowLayoutPanel_ShareWare.Location = new Point(flowLayoutPanel_ShareWare.Location.X, grbFreeWare.Location.Y + grbFreeWare.Height + grbShareWare.Height);
            flowLayoutPanel_ShareWare.Visible = true;
            grbFavourite.Location = new Point(grbFavourite.Location.X, grbFreeWare.Location.Y + grbFreeWare.Height + grbShareWare.Height + flowLayoutPanel_ShareWare.Height);
        }
        void vitrisharewaredong()
        {
            picShareWare.BackgroundImage = picXuongSang.BackgroundImage;
            grbShareWare.Location = new Point(grbShareWare.Location.X, grbFreeWare.Location.Y + grbFreeWare.Height + flowLayoutPanel_FreeWare.Height);
            flowLayoutPanel_ShareWare.Visible = false;
        }
        void vitrifreewaremo()
        {
            vitrisharewaredong();
            vitrifavouritedong();
            picFreeWare.BackgroundImage = picXuongToi.BackgroundImage;
            flowLayoutPanel_FreeWare.Visible = true;
            grbFavourite.Location = new Point(grbFavourite.Location.X, grbFreeWare.Location.Y + grbFreeWare.Height + flowLayoutPanel_FreeWare.Height + grbShareWare.Height);
        }
        void vitrifreewaredong()
        {
            flowLayoutPanel_FreeWare.Visible = false;
            picFreeWare.BackgroundImage = picXuongSang.BackgroundImage;
        }
        void vitrifavouritemo()
        {
            vitrifreewaredong();
            vitrisharewaredong();
            picShareWare.BackgroundImage = picXuongSang.BackgroundImage;
            flowLayoutPanel_ShareWare.Visible = false;
            grbShareWare.Location = new Point(grbShareWare.Location.X, grbFreeWare.Location.Y + grbFreeWare.Height);
            picFavourite.BackgroundImage = picXuongToi.BackgroundImage;
            grbFavourite.Location = new Point(grbFavourite.Location.X, grbFreeWare.Location.Y + grbFreeWare.Height + grbShareWare.Height);
            flowLayoutPanel_Favourite.Location = new Point(flowLayoutPanel_Favourite.Location.X, grbFreeWare.Location.Y + grbFreeWare.Height + grbShareWare.Height + grbFavourite.Height);
            flowLayoutPanel_Favourite.Visible = true;
        }
        void vitrifavouritedong()
        {
            picFavourite.BackgroundImage = picXuongSang.BackgroundImage;
            flowLayoutPanel_Favourite.Visible = false;
        }
        //Đóng mở các tiêu đề loại phần mềm
        int dem, dem1, dem2;
        private void lblFreeWare_Click(object sender, EventArgs e)
        {
            Label lbl = (Label)sender;
            if (lbl.Text == "Miễn Phí")
            {
                dem++;
                dem1 = 0;
                dem2 = 0;
                vitrifreewaremo();
                trangthailblloai = lbl.Text.ToLower();
                if (dem == 2)
                {
                    hienthidautien();
                    dem = 0;
                }
            }
            else if (lbl.Text == "Có Phí")
            {
                dem = 0;
                dem1++;
                dem2 = 0;
                vitrisharewaremo();
                trangthailblloai = lbl.Text.ToLower();
                if (dem1 == 2)
                {
                    hienthidautien();
                    dem1 = 0;
                }
            }
            else
            {
                dem = 0;
                dem1 = 0;
                dem2++;
                vitrifavouritemo();
                trangthailblloai = lbl.Text.ToLower();
                if (dem2 == 2)
                {
                    vitrifavouritedong();
                    dem2 = 0;
                }
            }
        }
        //Đóng mở tiêu đề loại phần mềm bằng pictureBox
        private void picFreeWare_Click(object sender, EventArgs e)
        {
            PictureBox pic=(PictureBox) sender;
            if (pic.Tag.ToString() == "Miễn Phí")
            {
                dem++;
                dem1 = 0;
                dem2 = 0;
                vitrifreewaremo();
                trangthailblloai = pic.Tag.ToString().ToLower();
                if (dem == 2)
                {
                    hienthidautien();
                    dem = 0;
                }
            }
            else if (pic.Tag.ToString() == "Có Phí")
            {
                dem = 0;
                dem1++;
                dem2 = 0;
                vitrisharewaremo();
                trangthailblloai = pic.Tag.ToString().ToLower();
                if (dem1 == 2)
                {
                    hienthidautien();
                    dem1 = 0;
                }
            }
            else
            {
                dem = 0;
                dem1 = 0;
                dem2++;
                vitrifavouritemo();
                trangthailblloai =pic.Tag.ToString().ToLower();
                if (dem2 == 2)
                {
                    vitrifavouritedong();
                    dem2 = 0;
                }
            }
        }        
        // Giới thiệu về chủ đề
        private void linkLabel1_MouseHover(object sender, EventArgs e)
        {
            LinkLabel lbl = (LinkLabel)sender;
            if (lbl.Text == "System")
                lblGioiThieu.Text = "Hiển thị các chương trình sửa chữa , bảo trì hệ thống";
            if (lbl.Text == "Virus-Security")
                lblGioiThieu.Text = "Hiển thị các chương trình phát hiện và diệt virus";
            if (lbl.Text == "Graphics")
                lblGioiThieu.Text = "Hiển thị các chương trình xử lý về đồ họa";
            if (lbl.Text == "Multimedias")
                lblGioiThieu.Text = "Hiển thị các chương trình xử lý đa phương tiện";
            if (lbl.Text == "Style-Themes")
                lblGioiThieu.Text = "Hiển thị các chương trình tạo giao diện";
            if (lbl.Text == "Utilities")
                lblGioiThieu.Text = "Hiển thị các chương trình đa ứng dụng , đa chức năng";           
        }        
        // Hàm đếm tổng số lượng phần mềm theo chủ đề      
        void soluongphanmemtheochude(string chude,string loaiphanmem)
        {
            ds = obj.demsoluongphanmemtheochude(chude, loaiphanmem);
            lblThongKeTheoChuDe.Text =ds.Tables[0].Rows[0]["soluong"].ToString();           
        }       
        //Kết hàm soluongphanmemtheochude vào sự kiện click của link label
        trunggian_danhsachphanmem obj = new trunggian_danhsachphanmem();
        DataSet ds;
        DataSet ds1;
        private void linkLabel1_Click(object sender, EventArgs e)
        { 
            
            lblThongBao.Visible = false;
            hieuchinhlabel_an_hien(false);
            picPanel.Visible = false;
            lblPanel.Visible = false;
            lvwHienThi.Items.Clear();
            LinkLabel lbl = (LinkLabel)sender;
            g_chude = lbl.Text;
            ds = obj.laydanhsachphanmemtheochude(trangthailblloai, lbl.Text);
            progressBar1.Maximum= ds.Tables[0].Rows.Count+1;
            progressBar1.Minimum =0;
            progressBar1.Value =0;
            timer2.Start();
            ds1 = obj.demsoluongphanmemtrongchuongtrinh();
            lblTenPhanMem.Text = "";
            lblChucNangPhanMem.Text = "";
            pictureBox2.Visible = false;
            lblLoaiPhanMem.Text = "";
            lblChuDe.Text = "";
        }
        int demmautin=0;
        public static bool vitrihinhdathaydoi = false;
        public void loadhinh(DataSet ds)
        {
            for (int i = 1; i <= imageList1.Images.Count - 1; i++)
            {
                imageList1.Images.RemoveAt(i);
            }
            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                ListViewItem li = lvwHienThi.Items.Add(dr["tenphanmem"].ToString());
                if (dr["hinh"].ToString() == "")
                    li.ImageIndex = 0;
                else
                {
                    FileInfo myfile = new FileInfo(dr["hinh"].ToString());
                    if (myfile.Exists)
                    {
                        imageList1.Images.Add(Image.FromFile(dr["hinh"].ToString()));
                        li.ImageIndex = imageList1.Images.Count - 1;
                    }
                    else
                    {
                        li.ImageIndex = 0;
                        vitrihinhdathaydoi = true;
                    }
                }
            }
            if (vitrihinhdathaydoi == true)
            {
                MessageBox.Show("Một hoặc vài hình đã bị thay đổi địa chỉ trong máy , chương trình không thể load , hãy cập nhật lại...", "Looking For Software", MessageBoxButtons.OK, MessageBoxIcon.Error);
                vitrihinhdathaydoi = false;
            }           
        }
        //Hiển thị load dữ liệu khi click vào label chủ đề
        private void timer2_Tick(object sender, EventArgs e)
        {
            this.UseWaitCursor = true;
            lblDemSoPhanMemTheoChuDe.Visible = true;
            progressBar1.Visible = true;
            progressBar1.Value+=1;
            demmautin = progressBar1.Value;
            lblDemSoPhanMemTheoChuDe.Text = "Đang nạp dữ liệu vào chương trình..." + "  " + demmautin.ToString() + "/" + ds.Tables[0].Rows.Count.ToString();
            if (demmautin == ds.Tables[0].Rows.Count+1)
            {
                timer2.Stop();
                this.UseWaitCursor = false;
                lvwHienThi.Visible = true;
                progressBar1.Visible = false;
                lblDemSoPhanMemTheoChuDe.Visible = false;
                grbThongTinChiTiet.Visible = true;              
                loadhinh(ds);
                soluongphanmemtheochude(g_chude, trangthailblloai);
                lblThongKeTong.Text = ds1.Tables[0].Rows[0]["tongsoluong"].ToString();
                progressBar1.Value = 0;
                
            }
        }
        //Sự kiện khi chọn phần mềm trong listview 
        //hiển thị dữ liệu chi tiết lên các label trong groupbox
        private void lvwHienThi_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (lvwHienThi.SelectedItems.Count > 0)
            {
                string tenphanmem = lvwHienThi.SelectedItems[0].SubItems[0].Text;
                ds =obj.layphanmemtheotenphanmem(tenphanmem);
                DataRow dr = ds.Tables[0].Rows[0];
                lblTenPhanMem.Text = dr["tenphanmem"].ToString();
                lblChucNangPhanMem.Text = dr["chucnang"].ToString();
                g_tenphanmem=dr["tenphanmem"].ToString();
                txtTenPhanMem.Text = g_tenphanmem;
                capnhat_tenphanmem = txtTenPhanMem.Text;
                g_chucnang = dr["chucnang"].ToString();
                g_diachidownload= dr["diachidownload"].ToString();
                lblLoaiPhanMem.Text = dr["loaiphanmem"].ToString();
                lblChuDe.Text = dr["chude"].ToString();
                pictureBox2.Visible = true;
                hieuchinhlabel_an_hien(true);
            }
        }
        //Gán dữ liệu vào các biến toàn cục
        void gandulieuvaocacbien()
        {
            string tenphanmem = lvwHienThi.SelectedItems[0].SubItems[0].Text;
            DataSet ds = obj.layphanmemtheotenphanmem(tenphanmem);
            DataRow dr=ds.Tables[0].Rows[0];
            g_tenphanmem= dr["tenphanmem"].ToString();
            g_chucnang= dr["chucnang"].ToString();
            g_chude= dr["chude"].ToString();
            g_loaiphanmem = dr["loaiphanmem"].ToString();
            g_diachidownload = dr["diachidownload"].ToString();
        }
        //Gọi hàm gandulieuvaocacbien() khi click chuột phải
        //vào phần mềm trên listview
        private void lvwHienThi_MouseUp(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                if (lvwHienThi.SelectedItems.Count>0)
                {
                    lvwHienThi.ContextMenuStrip = contextMenuStrip1;
                    gandulieuvaocacbien();
                }
            }            
        }
        //Nạp toàn bộ phần mềm từ bảng DanhSachBoSuuTap vào bộ sưu tập
        void loaddulieuvao_FlowlayoutpanelFavourit()
        {
            flowLayoutPanel_Favourite.Controls.Clear();
            ds = obj_danhsachbosuutap.laytoanbophanmem();
            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                LinkLabel lbl = new LinkLabel();
                lbl.Text = dr["tenphanmem"].ToString();
                lbl.ContextMenuStrip = contextMenuStrip2;
                lbl.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
                lbl.Size=new Size(114,23);
                flowLayoutPanel_Favourite.Controls.Add(lbl);
                lbl.Click += new EventHandler(lbl_Click);
                lbl.MouseUp += new MouseEventHandler(lbl_MouseUp);
            }
        }
        string tenphanmemduocchontrongbosuutap;
        //Gán dữ liệu vào biến toàn cục khi click chuột phải vào tên
        //phần mềm trong bộ sưu tập
        void lbl_MouseUp(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                LinkLabel lbl = (LinkLabel)sender;
                tenphanmemduocchontrongbosuutap = lbl.Text;
            }
        }
        //Hiển thị chi tiết phần mềm khi chọn phần mềm trong bộ sưu tập
        void lbl_Click(object sender, EventArgs e)
        {            
                picPanel.Visible = false;
                lblPanel.Visible = false;
                grbThongTinChiTiet.Visible = true;
                pictureBox2.Visible = true;
                LinkLabel lbl = (LinkLabel)sender;
                ds = obj_danhsachbosuutap.layphanmemtheotenphanmem(lbl.Text);
                DataRow dr = ds.Tables[0].Rows[0];
                g_tenphanmem = lblTenPhanMem.Text = dr["tenphanmem"].ToString();
                g_chucnang = lblChucNangPhanMem.Text = dr["chucnang"].ToString();
                g_diachidownload = dr["diachidownload"].ToString();
                lblLoaiPhanMem.Text = dr["loaiphanmem"].ToString();
                lblChuDe.Text = dr["chude"].ToString();
            
           
        }
        //Thêm vào bộ sưu tập khi chương trình đươc chọn trong listview bằng chuột phải
        private void ThemVaoBoSuuTap_Click(object sender, EventArgs e)
        {
            try
            {
                obj_danhsachbosuutap.themphanmemvaobang(g_tenphanmem);
                loaddulieuvao_FlowlayoutpanelFavourit();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Looking For Software", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        //Ẩn label giới thiệu chủ đề 
        private void linkLabel7_MouseLeave(object sender, EventArgs e)
        {
            lblGioiThieu.Text = "";
        }               
        //Mở form thêm chương trình
        private void toolStripButton2_Click(object sender, EventArgs e)
        {
            ThemChuongTrinh tct = new ThemChuongTrinh();
            tct.Show();
        }
        //Mở form cập nhật
        public static string capnhat_tenphanmem="";                
        private void toolStripButton3_Click(object sender, EventArgs e)
        {          
                CapNhat capnhat = new CapNhat();
                capnhat.Show();              
        }
        //Mở form giới thiệu
        private void toolStripButton5_Click(object sender, EventArgs e)
        {
            GioiThieu gioithieu = new GioiThieu();
            gioithieu.Show();
        }
        //Thoát chương trình
        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            DialogResult kt;
            kt = MessageBox.Show("Bạn muốn thoát chương trình", "Looking For Software", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
            if (kt == DialogResult.OK)
                Close();
        }       
        //Tìm kiếm phần mềm theo tên phần mềm
        private void toolStripButton6_Click(object sender, EventArgs e)
        {
            if (toolStripTextBox1.Text == "")
            {
                MessageBox.Show("Chưa nhập tên phần mềm cần tìm kiếm","Looking For Software",MessageBoxButtons.OK,MessageBoxIcon.Error);
                toolStripTextBox1.Focus();
            }
            else
            {
                lvwHienThi.Items.Clear();
                ds = obj.timkiemphanmemtheoten(toolStripTextBox1.Text);
                if (ds.Tables[0].Rows.Count == 0)
                {
                    lvwHienThi.Visible = false;
                    lblThongBao.Visible = true;
                    lblThongBao.Text = "Không có phần mềm nào chứa tên như trên !!!";
                    toolStripTextBox1.Focus();
                    toolStripTextBox1.Text = "";
                }
                else
                {
                    grbThongTinChiTiet.Visible = true;
                    lvwHienThi.Visible = true;
                    lblThongBao.Visible = false;
                    toolStripTextBox1.Text = "";
                    toolStripTextBox1.Focus();
                    loadhinh(ds);
                }
                picPanel.Visible = false;
                lblPanel.Visible = false;
            }
        }
        //Tìm kiếm phần mềm theo chức năng
        private void toolStripButton7_Click(object sender, EventArgs e)
        {
            if (toolStripTextBox2.Text == "")
            {
                MessageBox.Show("Chưa nhập chức năng phần mềm cần tìm","Looking For Software",MessageBoxButtons.OK,MessageBoxIcon.Error);
                toolStripTextBox2.Focus();
            }
            else
            {
                lvwHienThi.Items.Clear();
                ds = obj.timkiemphanmemtheochucnang(toolStripTextBox2.Text);
                if (ds.Tables[0].Rows.Count == 0)
                {
                    lvwHienThi.Visible = false;
                    lblThongBao.Visible = true;
                    lblThongBao.Text = "Không có phần mềm nào chứa chức năng như trên !!!";
                    toolStripTextBox2.Focus();
                    toolStripTextBox2.Text = "";
                    grbThongTinChiTiet.Visible = false;
                }
                else
                {
                    lblThongBao.Visible = false;
                    grbThongTinChiTiet.Visible = true;
                    lvwHienThi.Visible = true;
                    toolStripTextBox2.Text = "";
                    toolStripTextBox2.Focus();
                    loadhinh(ds);
                }
                picPanel.Visible = false;
                lblPanel.Visible = false;
            }
        }
        //Xoá phần mềm khỏi bảng DanhSachPhanMem
        //Hàm load lại dữ liệu vào listview sau khi xoá phần mềm
        public void loaddulieusaukhixoa(string loaiphanmem,string chude)
        {
            ds = obj.laydanhsachphanmemtheochude(loaiphanmem,chude);
            loadhinh(ds);
        }
        private void toolStripButton4_Click(object sender, EventArgs e)
        {
            if (lvwHienThi.SelectedItems.Count > 0)
            {
                DialogResult kq;
                kq = MessageBox.Show("Bạn muốn xóa phần mềm này khỏi cơ sở dữ liệu", "Looking For Software", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                if (kq == DialogResult.OK)
                {
                    obj.xoadulieutrongbang(lvwHienThi.SelectedItems[0].Text);
                    lvwHienThi.Items.Clear();
                    if (trangthailblloai != null && g_chude != null)
                    {
                        loaddulieusaukhixoa(trangthailblloai, g_chude);
                        ds1 = obj.demsoluongphanmemtrongchuongtrinh();
                        lblThongKeTong.Text = ds1.Tables[0].Rows[0]["tongsoluong"].ToString();
                        soluongphanmemtheochude(g_chude, trangthailblloai);
                        lblTenPhanMem.Text = "";
                        lblChucNangPhanMem.Text = "";
                        lblLoaiPhanMem.Text = "";
                        lblChuDe.Text = "";
                        pictureBox2.Visible = false;
                        capnhat_tenphanmem = "";
                    }
                    else
                    {
                        grbThongTinChiTiet.Visible = false;
                        lvwHienThi.Visible = false;
                    }
                    
                }
            }
            else
                MessageBox.Show("Bạn chưa chọn phần mềm cần xóa","Looking For Software",MessageBoxButtons.OK,MessageBoxIcon.Error);
        }
        //Xoá phần mềm khỏi bảng DanhSachBoSuuTap
        private void XoaPhanMemKhoiBoSuuTap_Click(object sender, EventArgs e)
        {
            obj_danhsachbosuutap.xoaphanmem(tenphanmemduocchontrongbosuutap);
            loaddulieuvao_FlowlayoutpanelFavourit();
        }       
        private void pictureBox2_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Process.Start(g_diachidownload);
        }
        private void lblChucNangPhanMem_MouseHover(object sender, EventArgs e)
        {
            string chuoi = "Chi tiết về chức năng của phần mềm :"+"  " + g_tenphanmem;
            toolTip1.Active = true;
            toolTip1.SetToolTip(lblChucNangPhanMem,g_chucnang);
            toolTip1.ToolTipTitle = chuoi;
        }
        private void lblChucNangPhanMem_MouseLeave(object sender, EventArgs e)
        {
            toolTip1.Active = false;
        } 
        private void toolStripTextBox2_MouseHover(object sender, EventArgs e)
        {
            toolTip1.Active = true;
            toolStripTextBox2.ToolTipText = "Gõ tiếng Việt có dấu";
        }
        private void toolStripTextBox2_MouseLeave(object sender, EventArgs e)
        {
            toolTip1.Active = false;
        }

        private void pictureBox2_MouseHover(object sender, EventArgs e)
        {
            string chuoi = "Địa chỉ download của phần mềm : " + g_tenphanmem;
            toolTip1.Active = true;
            toolTip1.SetToolTip(pictureBox2, g_diachidownload);
            toolTip1.ToolTipTitle = chuoi;
        }

        private void pictureBox2_MouseLeave(object sender, EventArgs e)
        {
            toolTip1.Active = false;
        }

          

       

       

       

       

        

       

        

       

        

       

      

       

        
    }
}



        

        

       

        

        

        
